ASI 自動分號插入


Posted by hoyi-23 on 2021-05-18

甚麼是 ASI ?
有時候我們會看到JavaScript內,一下有";",一下沒有。這是因為有JavaScript特別的機制才能正常運作。

ASI (Automatic Semicolon Insertion)

當JavaScipt語句沒有加上分號時,則會受到自動插入分號(ASI)規則影響。
ASI 自動分號插入 - JavaScript 其實是允許不寫分號的,因為它會自動幫你插入。

ASI 錯誤時刻

1 return

var a = function(){
    return
    'Hi'
}
console.log(a()) //undefined

結果出現undefined,因為ASI的機制,實際執行時會長這樣:

var a = function(){
    return; //結束了
    'Hi';
}
console.log(a()); //undefined

2 立即函式

後面直接放上(),以馬上執行。

(function(){
    console.log('hi')
})() //undefined

解決這個錯誤的方式有兩種,一種是在立即函式結尾補上分號或者是在立即函式前面補上分號

(function(){
    console.log('hi')
})(); //hi
;(function(){
    console.log('hi')
})() //hi

這些開頭容易出錯

  1. (、[、/、
  2. 大部分算數運算子
  3. 點運算子(.)
  4. 逗號(,)

這些語句容易受影響

空的陳述式
var 陳述式
表達陳述式
do-while
continue
break
return
throw

遇上這些出錯,加入分號也是解決辦法。


#ASI







Related Posts

Day 22-Pong Game

Day 22-Pong Game

What Type of Laser Engraving Machine Should be Used for Stainless Steel Engraving?

What Type of Laser Engraving Machine Should be Used for Stainless Steel Engraving?

npm、yarn 用法簡介

npm、yarn 用法簡介


Comments